home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 2
/
Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso
/
Aminet
/
misc
/
amag
/
am9307b.lha
/
Tips & Tricks
/
S&W
/
S&W.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-05-26
|
3KB
|
86 lines
/* S&W.c - von Christof Brühann
* Aufruf mit DICE: dcc S&W.c -o S&W */
#include <time.h>
#include <dos/dos.h>
#define WINTERTIME 0
#define SUMMERTIME 1
#define DATAFILE "s:Sommer&Winter.dat"
BOOL SummerTime(struct tm *tm) {
/* feststellen, ob die Zeit "tm" Sommerzeit ist */
int mon,mday,hour,wday;
mon =tm->tm_mon+1; /* tm-Struktur auslesen: Monat */
mday=tm->tm_mday; /* Monatstag */
wday=tm->tm_wday; /* Wochentag */
hour=tm->tm_hour; /* Stunde */
if (mon==3 && mday-25>=wday) {
/* wenn März: schon Sommerzeit? */
/* Zeit prüfen wenn letzer Märzsonntag*/
if (wday==0 && hour<2) return(FALSE);
return(TRUE);
}
if (mon==9 && mday-24>=wday) {
/* wenn September: schon Winterzeit? */
if (wday==0 && hour<2) return (TRUE);
return(FALSE);
}
/* restlichen Monate prüfen */
if (mon>3 && mon<=9) return(TRUE);
return(FALSE);
}
int main()
{
struct FileHandle *DataFile;
struct tm *tm;
time_t secs;
UBYTE time_now,time_before,string[255];
if (DataFile=(struct FileHandle *)
Open(DATAFILE,MODE_READWRITE)) {
/* Datendatei öffnen */
time(&secs); /* aktuelle Zeit */
tm=localtime(&secs); /* besorgen */
time_now=WINTERTIME;
if (SummerTime(tm))
time_now=SUMMERTIME; /* Sommerzeit */
if (Read(DataFile,&time_before,1)) {
/* Datenfile lesen */
if (time_now==SUMMERTIME &&
time_before==WINTERTIME && tm->tm_mon!=8) {
/* Wechsel von Winter- nach Sommerzeit? */
secs+=3600; /* Zeit um eine Stunde erhöhen */
tm=localtime(&secs);
sprintf(string,"date %d:%d:%d",
tm->tm_hour,tm->tm_min,tm->tm_sec);
if (Execute(string,0,0) &&
Execute("setclock save",0,0)) {
/* neue Zeit setzen */
puts("Beginn der Sommerzeit. Die Uhr wurde "
"um eine Stunde vorgestellt.");
if(Seek(DataFile,0,OFFSET_BEGINNING))
Write(DataFile,&time_now,1);
}
}
if(time_now==WINTERTIME &&
time_before==SUMMERTIME) {
/* Wechsel von Sommer- nach Winterzeit? */
secs-=3600; /* aktuelle Zeit zurückstellen */
tm=localtime(&secs);
sprintf(string,"date %d:%d:%d",tm->tm_hour,
tm->tm_min,tm->tm_sec);
if (Execute(string,0,0) &&
Execute("setclock save",0,0)) {
puts("Beginn der Winterzeit. Die Uhr wurde "
"um eine Stunde zurückgestellt.");
if (Seek(DataFile,0,OFFSET_BEGINNING))
Write(DataFile,&time_now,1);
}
}
}
else
/* Datei existierte noch nicht */
Write(DataFile,&time_now,1);
Close(DataFile);
}
return(0);
}